﻿using UnityEngine;
using System.Threading.Tasks;

public class SyncCallAsyncWithBlocking3 : MonoBehaviour
{
    
    private async void Start()
    {
        Debug.Log("主线程开始"); // 不能打印,后续错误异步代码,瞬间阻塞卡住主线程
        // 在 Start 这个同步方法中调用异步方法
        await CallAsyncMethodAndBlock();
        // 以下代码会在阻塞结束后执行
        Debug.Log("主线程阻塞结束，恢复正常");
    }

    private async Task CallAsyncMethodAndBlock()
    {
        // 启动一个异步任务
        await Task.Run(async () =>
        {
            // 模拟一个 x 秒的异步操作 阻塞!
            await Task.Delay(6000);
            Debug.Log("异步任务完成");
        });
    }
    void Update()
    {
        Debug.Log("Update" );
    }
}